#!/usr/bin/python
# -*- coding: utf-8 -*-

'''
Created on 06/11/2011

@author: daniel
@contact: cdaniel.py@gmail.com
@summary: representa los datos basicos de un campo de tabla
'''



class Campo(object):
    '''
    representa los datos del campo de una tabla
    '''
    
    #atributos de la clase
    NOMBRE_CLASE    = "Campo" 
    
    nIndice         = 0
    cNombre         = ""
    bNulo           = False
    tTipo           = object
    bAutoGenerado   = False
    
    
    
    def __init__(self, **parametros):
        '''
        inicializador de la clase
        nIndice        = posicion ordinal del campo respecto de los demas
        cNombre        = nombre del campo
        [bNulo]        = si acepta valores nulos o no
        [tTipo]        = tipo de datos que representa
        [bAutoGenerado]= si es autogenerado o no
        '''
        
        __dicParam = {}
        __dicParam = parametros
        
        #tomamos los valores pasados como parametros
        self.cNombre = __dicParam["cNombre"]
        self.nIndice = __dicParam["nIndice"]
        
        if __dicParam.has_key("bNulo"): self.bNulo = __dicParam["bNulo"]
        
        if __dicParam.has_key("tTipo"): self.tTipo = __dicParam["tTipo"]
        
        if __dicParam.has_key("bAutoGenerado"): self.bAutoGenerado = __dicParam["bAutoGenerado"]
        
    
    
    
    def __str__(self):
        '''descripcion de la clase'''
        
        return "<%s: %s - %s>" % (self.NOMBRE_CLASE, self.cNombre, str(self.tTipo))
        
    
    def __repr__(self):
        '''representacion de la clase'''
        
        return "<%s: %s - %s>" % (self.NOMBRE_CLASE, self.cNombre, str(self.tTipo))
        
    
    
#lanzador de prueba del modulo
if __name__ == "__main__":
    
    #instanciacion basica
    oCampo = Campo(nIndice=0, cNombre="CAMPO0")
    
    #prueba
    print oCampo
    
    #instanciacion completa
    oCampo = Campo(nIndice=0, cNombre="CAMPO0", bNulo=False, tTipo=type(0.0), bAutogenerado = True)
    
    #prueba
    print oCampo.bAutoGenerado
    
    